package com.chen.blog.common.aop;

import java.lang.annotation.*;

/**
 * 自定义aop注解
 */
//Type代表可以放在类上面，Method表示可以放在方法上
@Target({ElementType.METHOD})
//Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值:
//
//1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
//2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
//3.RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用.
@Retention(RetentionPolicy.RUNTIME)
//Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中.
//
//作者：氨基钠
//链接：https://www.jianshu.com/p/8738ce6bd771
//来源：简书
//著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
@Documented
public @interface LogAnnotation {

    String module() default "";

    String operator() default "";
}
